//
//  YHKHomeViewController.swift
//  xinlangweiBo2
//
//  Created by 杨和逵 on 16/2/28.
//  Copyright © 2016年 yanghekui. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD




class YHKHomeViewController: YHKBaseTableViewController {

    //创建ViewModel的实例
    var homeViewModel:YHKHomeViewModel?
    
    //标识符
    var HomeViewControllerReuserIdenfiter = "HomeViewControllerReuserIdenfiter"

    
    override func viewDidLoad() {
        super.viewDidLoad()
//关注一些人，回这里看看有什么惊喜,visitordiscover_feed_image_house
        // Do any additional setup after loading the view.

            visitor?.setInfo("关注一些人，回这里看看有什么惊喜", image: "visitordiscover_feed_image_house", animation: true)
        
        if isLogin{
            
            
            //请求数据
            homeViewModel = YHKHomeViewModel()
            
            //调用
             loadData()
            
            
    
        
            
            //注册cell
            tableView.registerClass(YHKHomeTableViewCell.self, forCellReuseIdentifier: HomeViewControllerReuserIdenfiter)
            
//            tableView.rowHeight = 200
            //自动算行高
            tableView.rowHeight = UITableViewAutomaticDimension
            
            //预估行高
            tableView.estimatedRowHeight = 200
            
            //添加到tableView的footer上
          tableView.tableFooterView = pullView
           
            //添加刷新视图
            tableView.addSubview(refreshView)
            
            //
            refreshView.addTarget(self, action: "loadData", forControlEvents: UIControlEvents.ValueChanged)
            

        }
 
    }

    //写一个方法
    func loadData(){
        
        //第三方：提示信息
        SVProgressHUD.show()
        
        
        
        //上提更多，需要把since_id = 0
        var since_id = homeViewModel?.array.first?.statrsModel?.id ?? 0//获取数据
        
        //获取max_id
        var max_id = 0
        
        if pullView.isAnimating(){
            
            //让since_id = 0
            since_id = 0
            
            //拿到最后一条数据
            max_id = homeViewModel?.array.last?.statrsModel?.id ?? 0
            
            max_id -= 1
        }
        
        homeViewModel?.loadData(since_id, max_id: max_id, biBao: { (count:Int) -> () in
            
            self.tableView.reloadData()
            
            //菊花转的时候，肯定是上体更多
            if !self.pullView.isAnimating(){
                
                //显示刷新提示
                self.showNewCount(count)
            }
            
            
            
            //还员加载标记
            self.pullView.stopAnimating()
            
            SVProgressHUD.dismiss()
            
            //加载完数据之后，调用这个方法修该高度和状态
            self.refreshView.endRefreshing()
        })
    }
    
    
    
    /*
    1.数据显示的问题
    2.上体更多的时候，也有提示
    
    */
    //MARK:--显示刷新数据提示
    private func showNewCount(count:Int){
        
        //创建视图
        let showMessageLabel = UILabel(frame: CGRectMake(0,64-44,kUIScreenWidth,44))
        
       //设置属性
        showMessageLabel.backgroundColor = UIColor.orangeColor()
        
        //根据是否有数据更新来确定返回的数据
        if count > 0{
            
            showMessageLabel.text = "更新了\(count)条数据"
        }else{
            showMessageLabel.text = "暂无更新"
        }
        
        showMessageLabel.textAlignment = .Center
        
        showMessageLabel.textColor = UIColor.blackColor()
        
        showMessageLabel.font = UIFont.systemFontOfSize(16)
        
        //添加到视图里
        self.navigationController?.view.insertSubview(showMessageLabel, belowSubview:( navigationController?.navigationBar)!)
        
        //需要一个动画
        UIView.animateWithDuration(2, animations: { () -> Void in
            
            //让位置发生改变
            showMessageLabel.transform = CGAffineTransformMakeTranslation(0, 44)
            
            }) { (_) -> Void in
                //当动画完成之后，隐藏
                UIView.animateWithDuration(2, animations: { () -> Void in
                    //回到原点
                    showMessageLabel.transform = CGAffineTransformIdentity
                    
                    }, completion: { (_) -> Void in
                        
                        //销毁视图或者隐藏
                        showMessageLabel.removeFromSuperview()
                })
        }
        
        
    }
    
    
    
    //懒加载
    private lazy var pullView:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
    
    ///添加顶部刷新的视图
    private var refreshView:YHKRefreshView = YHKRefreshView()
  
}


//MARK:数据源方法的代理方法
extension YHKHomeViewController{
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return homeViewModel?.array.count ?? 0
    }
    

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeViewControllerReuserIdenfiter, forIndexPath: indexPath) as! YHKHomeTableViewCell
        //需要把模型传递给cell
        cell.homeCellViewModel = homeViewModel?.array[indexPath.row]
        
//        cell.homeCellViewModel = homeViewModel?.array[indexPath.row] 
        
        
        //在创建cell的时候，我们判断一下，indexPath.row
        //当数据已经请求的时候，就不要让它再请求了=======同时，菊花不转的时候
        if indexPath.row == (homeViewModel!.array.count - 1) && !pullView.isAnimating(){
            
            //请求数据
            //先转，在加载数据
//            pullView.stopAnimating()
            //菊花转的时候
            pullView.startAnimating()
            
            loadData()
            
            print("上啦更多数据")
        }
        
        
        return cell
    }
    

}





